import { KnowledgePoint, Question } from '@/types/Course';

// 定义接口返回的数据类型
export interface ApiResponse<T> {
    code: number; // 假设后端返回的状态码
    message: string; // 假设后端返回的消息
    data: T; // 题库列表数据
  }
  
// 定义查询参数类型  
export interface QuestionListQueryParams {
    sort?: SortOptions; // 定义查询参数类型
    type?: string; // 定义题库列表类型
    currentPage?: number;
    pageSize?: number;
  }

  // 定义查询参数类型
export interface SortOptions {
  sortName?: "exercises_id" | "difficulty" | "accuracy" | "challenge_num";
  sortType?:"ASC" | "DESC";   
}

// 定义题库列表类型
export interface questionBanListType {
    exercisesId: number;
    title: string;
    questionStem: string;
    courseInfo:{
      courseId: number;
      courseName: string;
    }
    chapterInfo:{
      chapterId: number;
      chapterName: string;
    }
    exerciseType: string;
    difficulty: number;
    difficultyText: string;
    accuracy: number;              // 正确率
    challengeNum: number;          // 做题次数/挑战人数
    type: string;
    answerStatus: string;
    questions: Question[];
    knowledge: KnowledgePoint[];
}

//定义查询具体题的类型
export interface ChangeQuestion {
  exercisesId: number;        // 题目ID
  title: string;              // 题目标题
  exerciseType: string;       // 题目类型
  questionStem: string;       // 题目题干
  quesTitle: string;          // 问题
  questionAnswer: string;     // 题目答案
  knowledgeContent: string;   // 知识点
  questionType: string;       // 问题类型
}

// 定义改卷的参数类型参数类型
export interface ExampleParams {
    userId: number;
    exercisesId: number;
    userAnswer: Array<string | number>;     // 用户答案 
}
// 定义改卷的返回类型
export interface GradingResult {
  score: number;
  question: Question[]; // 根据实际情况定义 Question 类型
  feedback: string;     // Ai返回的解析
}

// 定义组卷表单数据的类型
export interface FormData {
  title: string; // 题
  testTitle: '', // 标题
  type: string; // 组卷类型
  difficulty: string; // 组卷难度（AI 组卷）
  selectedCourses: string[]; // 已选课程（AI 组卷）
  choiceCount: string; // 选择题数（AI 组卷）
  fillCount: string; // 填空题数（AI 组卷）
  judgeCount: string; // 判断题数（AI 组卷）
  shortAnswerCount: string; // 简答题数（AI 组卷）
  subType: String, // 明确 subType 的类型
  score: number,
  time: Date,
  Subject: string;
  strategies: string;
}

// 组卷里的课程类型
export interface Course {
  courseId: number;
  courseName: string;
}

// 组卷里的知识点类型
export interface Knowledge {
  recordId: number;
  courseId: number; // 关联课程ID
  knowledgeContent: string;
}

// 定义手动组卷搜索数据的类型
export interface SearchData {
  title: string;
  difficulty: number;
  questionType: String,
  exercisesId: number,
  courseId: number;
  pageNum?: number;
  pageSize?: number;
  selected?: boolean; // 新增，标记是否已选
}

// 定义手动组卷搜索数据的类型
// export interface CombinedResult {
//   questions: Question[];
//   courses: Course[];
//   exercises: questionBanListType[];
// }

export interface ExamQuestionBan {
  id: number
  title: string
  questionStem: string
  questionTitle: string
  questionType: '选择题' | '填空题' | '判断题' | '简答题'
  score: number
  answerOptions?: string[]  // 明确为字符串数组
  answer: string
  analysis?: string
  recId?: number
  exercisesId?: number
  displayOrder?: number
  userAnswerHtml?: string
  userAnswerText?: string
  questions: Question[]
}

//  定义组卷数据类型
export interface Exam {
  Subject: string
  testTitle: string
  examTime: Date
  examScore: number
  difficulty?: string
  exercises: Exercises[]
}

// 定义组卷里的题数据类型
export interface Exercises {
  exercisesId: number
  title:  string
  // type: string
  questionStem: string
  questions: Question[]
  score?: number // 添加每题总分
}